/**
 *  Copyright (C) 2008-2013  Telosys project org. ( http://www.telosys.org/ )
 *
 *  Licensed under the GNU LESSER GENERAL PUBLIC LICENSE, Version 3.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *          http://www.gnu.org/licenses/lgpl.html
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package org.telosys.persistence.syntax;

import java.util.List;

public class StatementTokenizer 
{
	
//    public List<String> getWords(String s)
//    {
//    	SqlWords words = new SqlWords();
//
//    	if (null == s )
//        {
//        	return words.getList();
//        }
//        
//        char chars[] = s.toCharArray();
//        
//        for ( int n = 0 ; n < chars.length ; n++ )
//        {
//        	char c = chars[n] ;
//
//			
//    		if ( words.currentWord() ) 
//    		{
//    			if ( Character.isJavaIdentifierPart(c) ) {
//    				// Continue to build the word
//    				 words.addToWord(c);
//    			}
//    			else {
//    				 words.endOfCurrentWord(c);
//    			}
//    		}
//    		else
//        	{
//    			if ( Character.isJavaIdentifierStart(c) ) {
//    				// Start a new word
//    				 words.startNewWord(c);
//    			}
//    			else {
//    				 words.noCurrentWord(c);
//    			}
//        	}
//        }
//        return words.getList() ;
//    }
    
    
    public List<StatementPart> getParts(String s)
    {
    	StatementParts parts = new StatementParts();

    	if (null == s )
        {
        	return parts.getList();
        }
        
        char chars[] = s.toCharArray();
        
        //for ( int n = 0 ; n < chars.length ; n++ )
        for ( char c : chars )
        {
        	//char c = chars[n] ;
			
    		if ( parts.currentWord() ) 
    		{
    			if ( Character.isJavaIdentifierPart(c) ) {
    				// Continue to build the word
    				parts.addToWord(c);
    			}
    			else {
    				parts.endOfCurrentWord(c);
    			}
    		}
    		else
        	{
    			if ( Character.isJavaIdentifierStart(c) ) {
    				// Start a new word
    				parts.startNewWord(c);
    			}
    			else {
    				parts.noCurrentWord(c);
    			}
        	}
        }
        parts.close();
        
        return parts.getList() ;
    }
    
}
